﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace FeiYang
{
    public  class 组队任务菜单_
    {
        public Rectangle 任_ = Rectangle.FromLTRB(9, 48, 32, 73);
        public Rectangle 务_ = Rectangle.FromLTRB(9, 78, 32, 103);
        public Rectangle 组_ = Rectangle.FromLTRB(9, 131, 32, 153);
        public Rectangle 队_ = Rectangle.FromLTRB(9, 160, 32, 183);

        public Rectangle 创建队伍_ = Rectangle.FromLTRB(58, 252, 136, 273);
        public 组队任务菜单_(List<string> 成员组)
        {
            this.成员组 = 成员组;
        }
        public List<string> 成员组 { get;  set; }

        public bool 任务组队菜单是展开的()
        {
            return 其他_.循环判断(() => {
                var n =  图像_.查找文字("任", 任_).X != -1 ?
                图像_.查找文字("务", 务_).X != -1?
                图像_.查找文字("组", 组_).X != -1 ? 
                图像_.查找文字("队", 队_).X != -1?
                4: 3: 2: 1: 0;
                return n > 1;
            }, 2);
        }

        public bool 关闭组队任务菜单()
        {
            if (this.任务组队菜单是展开的())
            {
                键鼠_.左键单击(20, 300);
                return 其他_.循环判断(() => !this.任务组队菜单是展开的(), 2);
            }
            return true;
        }

        public bool 打开组队任务菜单()
        {
            if (!this.任务组队菜单是展开的())
            {
                键鼠_.左键单击(20, 300);
                return 其他_.循环判断(() => this.任务组队菜单是展开的(), 2);
            }
            return true;
        }

        public bool 组队列表是激活的()
        {
            if (this.任务组队菜单是展开的())
            {
                return 其他_.循环判断(()=> 图像_.查找文字("创建队伍", 创建队伍_).X != -1 || 图像_.查找文字("邀请", 创建队伍_).X != -1, 2);
            }
            return false;
        }

        public bool 激活任务菜单()
        {
            打开组队任务菜单();
            if (组队列表是激活的())
            {
                键鼠_.左键单击(20, 80);
                return !组队列表是激活的();
            }
            return 任务组队菜单是展开的();
        }
        public bool 激活组队菜单()
        {
            打开组队任务菜单();
            if (!组队列表是激活的())
            {
                键鼠_.左键单击(20, 160);
                return 组队列表是激活的();
            }
            return 任务组队菜单是展开的();
        }

        public bool 组队已经创建()
        {
            return  其他_.循环判断(()=>图像_.查找文字("邀请", 创建队伍_).X != -1, 2);
        }

        public bool 创建组队()
        {
            var 激活成功 =  激活组队菜单();
            if (!激活成功) throw new Exception("激活组队菜单失败");
            var 已经创建 = true;
            if (!this.组队已经创建())
            {
                已经创建 = 其他_.循环判断(()=> {
                    var p = 图像_.查找文字("创建队伍", 创建队伍_);
                    if (p.X != -1)
                    {
                        键鼠_.左键单击(其他_.取中心(创建队伍_));
                    }
                    p = 图像_.查找文字("邀请", 创建队伍_);
                    return p.X != -1;
                });
            }
            return 已经创建;
        }

        public bool 任务列表是激活的()
        {
            if (this.任务组队菜单是展开的())
            {
                return 其他_.循环判断(()=>图像_.查找文字("创建队伍", 创建队伍_).X == -1 && 图像_.查找文字("邀请", 创建队伍_).X == -1, 2);
            }
            return false;
        }

        public bool 队长创建组队(挂机人物_ 人物)
        {
            var 名字 = 人物.姓名;
            if (this.成员组.Count > 0)
            {
                var 第一个 = this.成员组.FirstOrDefault();
                if (第一个 == 名字)
                {
                    人物.我是队长 = true;
                    创建组队();
                }
            }
            return false;
        }
    }
}
